home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / inet / internet-drafts / draft-chiappa-routing-01.txt < prev    next >
Text File  |  1993-09-23  |  88KB  |  1,477 lines

  1. Internet-Draft <draft-chiappa-routing-01.txt>           Expires on April 1994
  2.  
  3.  
  4.         A New IP Routing and Addressing Architecture
  5.  
  6.                   J. Noel Chiappa
  7.  
  8.  
  9.  
  10. [ Author's note: This document is not yet fully complete, but it is being
  11. distributed in this rough form since there appears to be a considerable
  12. appetite in the network community for discussion on this topic. It is hoped
  13. that this note, even in its present form, will facilitate useful debate about
  14. the issue. ]
  15.  
  16. Status of the Memo
  17.  
  18. This document is an Internet Draft.  Internet Drafts are working
  19. documents of the Internet Engineering Task Force (IETF), its Areas,
  20. and its Working Groups. Note that other groups may also distribute
  21. working documents as Internet Drafts.
  22.  
  23. Internet Drafts are draft documents valid for a maximum of six
  24. months. Internet Drafts may be updated, replaced, or obsoleted
  25. by other documents at any time.  It is not appropriate to use
  26. Internet Drafts as reference material or to cite them other than
  27. as a "working draft" or "work in progress."
  28.  
  29. Please check the I-D abstract listing contained in each Internet
  30. Draft directory to learn the current status of this or any
  31. other Internet Draft.
  32.  
  33.  
  34. 1 Introduction
  35.  
  36.     This document presents one possible new IP routing and adressing
  37. architecture. By routing and addressing it is meant that part of the overall
  38. IP architecture which is responsible for identifying computing nodes,
  39. where they are in the Internet, and how to get traffic from one to another. It
  40. represents one person's view of a good overall system answer to this question,
  41. and is not to be taken as anything more than that.
  42.     While this document will be of most interest to those with some degree
  43. of familiarity with routing concepts, it is aimed at the general network
  44. community, which will have to agree with the general direction taken in
  45. evolving this aspect of the IP architecture. While the subject is a complex
  46. one, the document has been written to be accessible to a general audience. As
  47. such, it contains much material which will be familiar to those who are versed
  48. in routing work, which has unavoidably lengthened the document.
  49.  
  50.     The goals of the new architecture are more or less those outlined in
  51. RFC1126 [Little], particularly Appendix A, but modified somewhat to include
  52. what I feel are real constraints, such as more complex external policy
  53. concerns. To review them briefly, they are to allow a system substantially
  54. larger than the current one (if possible of essentially unlimited size), to
  55. address the policy concerns which are of increasing importance, to allow
  56. topologies of a much more complex nature, and to retain the flexibility of the
  57. current system. A concise outline of the goals believed necessary are given in
  58. the section below.
  59.     These design goals are a very agressive set of requirements. They
  60. exceed considerably the existing capabilities of other large communication
  61. systems, such as the telephone system. Two aspects in particular represent a
  62. major leap. The first such aspect is the attempt to create a ubiquitous
  63. communication system (and route traffic through it) out of a very large number
  64. of cooperating autonomous units (although in some senses the road network does
  65. currently accomplish this goal). The second is the assumption that the system
  66. will be extremely dynamic; i.e. respond in real time, without human
  67. intervention, to changes in the topology and other configuration aspects of
  68. the system.
  69.  
  70.     To meet these goals requires a substantial modification to the basic
  71. philosophy and mechanism of the existing IP packet layer architecture. Since
  72. the system is now widely deployed, a change of this sort - an in-place
  73. modification to a large, operating, system - presents a substantial challenge.
  74.     To meet it it is first necessary to solve the problem of routing, and
  75. only then turn to addressing. As will be seen, routing (and especially the
  76. abstraction of data which will be necessary to handle a very large system) is
  77. a sufficiently difficult problem that any way of making the problem easier is
  78. desperately needed. Addressing needs to be completely sublimated to the needs
  79. of the routing architecture; the form of addresses should be whatever is most
  80. useful to the routing. Dividing the address up in such a way as to ease
  81. administrative tasks is not correct, although a separate mechanism to handle
  82. such administrative concerns is possible.
  83.  
  84.     It should be noted that this document is not an engineering design
  85. document. No detailed mechanisms have been laid out, and undoubtly many
  86. pitfalls remain along the path to a complete system. Little attempt has been
  87. made to consider optimizations for common cases and other engineering
  88. practises; no study has been made of traffic patterns, and of course the cost
  89. of the actual mechanisms is unknown since the design has not been done; both
  90. are necessary to guide the cost/benefit choices inherent in good engineering.
  91. Rather, this document contains a study which attempts to clarify what are
  92. the fundamentals of the problem, and then identifies what seems to be the
  93. best path available to solve that problem.
  94.     Also, it was felt that rather than proceed forward along a visible
  95. path from where we are now, the best method (when considering the long term
  96. health of the the network) was to act as if a blank piece of paper were
  97. available. When the best possible design was created, it would at that point
  98. be appropriate to see whether it was feasible to reach that design from the
  99. current system. Proceeding from the optimal end point backward seems more
  100. likely to result in the best long term results than proceeding forward from
  101. the current state of affairs in an incremental fashion.
  102.     Thus, what this document is an attempt to decide on a general plan of
  103. attack on the problem; a broad-brush architecture based on a long study of the
  104. fundamental issues and problems in routing and addressing in a very large
  105. network.
  106.  
  107.  
  108. 2 Design Goals
  109.  
  110.     The list of goals for the new architecture are of three types. The
  111. first are those capabilities that the existing architecture already has, which
  112. are still needed. The second are things that it cannot do, and which are
  113. proving to be major hindrances in actual operation. The third are those
  114. necessities which will be required in the future, and which may not be obvious
  115. now.
  116.     There are also certain longstanding goals of the IP architecture,
  117. such as the ability to support mobile hosts, which have previously been
  118. difficult. It proves possible to support these in the new architecture, as
  119. will be seen.
  120.  
  121. 2.1 Current Capabilities
  122.  
  123.     First and foremost, the new architecture must be incrementally
  124. deployable with respect to the existing system. The capital investment in
  125. existing software and plant, and the day-to-day operational dependence of many
  126. people, is so large that to start from scratch would be phenomenally
  127. expensive, and utterly impractical. If there were no way to do it without a
  128. fresh start, perhaps it would be practical, but since it seems to not be
  129. necessary, incremental deployabilty is a must. This does not preclude eventual
  130. replacement of the existing architecture, obviously; to retain it indefinitely
  131. would unduly cramp the system.
  132.     In specific terms, a new system should not require any changes to
  133. hosts to become fully operational (although eventual changes to hosts are
  134. allowable to take full power from the new scheme); too many unmodifiable
  135. existing hosts exist, and support for them must be maintained for some time in
  136. the architecture.
  137.     Second, changes to routers (which are almost certainly unavoidable if
  138. anything concrete is to be attained) need to be interoperable (for a period,
  139. at least) with the existing system, although it is reasonable in the case of
  140. routers to insist that basically all be converted before the new architecture
  141. can be fully operational. Some feel that even changing all the routers is too
  142. ambitious, and unnecessary, but it appears that this goal is unneeded, and
  143. conflicts with the general principle of providing the best possible system
  144. for the long term.
  145.  
  146.     Next, the current system allows minimal firewalls between AS's; errors
  147. in routing data from outside the AS cannot (in a properly designed AS)
  148. interfere with communication inside the AS. While the concept of an AS is
  149. perhaps outdated, this property is desireable, although it needs to be
  150. strengthened and made more flexible. As things stand, a single misbehaving AS
  151. can cause almost limitless problems in the inter-AS routing. A systematic way
  152. of minimizing such problems needs to be included.
  153.     Finally, it must be vendor-independant; that is, specified in enough
  154. detail that an implementation by a new vendor, operating solely from the
  155. specifications, will interoperate correctly with other existing
  156. implementations.
  157.  
  158. 2.2 Current Limitations
  159.  
  160.     The things about the current system that are most limiting are the
  161. limit on the total size of the system, the lack of support for policy routing,
  162. and the inability to support arbitrary topologies (although this last
  163. restriction is being lifted by the deployment of BGP).
  164.  
  165.     The size restriction has two phases. First, a key existing routing
  166. protocol (EGP) has a small limit on the total number of networks, but, as
  167. with the problems of topology, as BGP is deployed as a replacement, this
  168. limit will fade.
  169.     The second set (which consist of three far more fundamental problems)
  170. is that the system is running out of network numbers, the ability to route
  171. them, and eventually, out of address space completely. This topic is not
  172. treated here in detail [Chiappa91], but briefly, the first problem involves
  173. the accelerating use of the limited number of network numbers, the second
  174. concerns the difficulty of routing in a flat address space which is growing
  175. (very quickly, to boot), and the third recognizes the eventual limits of the
  176. 32 bit address.
  177.  
  178.     Policy routing is the phrase used to describe external, administrative
  179. input to the data routing process. Currently, the system provides little to no
  180. support for this. The ad hoc mechanisms being used are so complex as to
  181. confuse all but the most skilled, and contain substantial potential for
  182. errors. The main problem is that the existing mechanisms are fairly unrelated
  183. to the desired goals, and the use of these mechanisms to produce the desired
  184. goals is thus complex and often impossible; they simply do not address
  185. existing policy requirements.
  186.     Policy requirements can be divided into three areas, which can be
  187. called a) 'access control', control over which external users are allowed to
  188. use a given resource; b) the 'trust model', control over which external
  189. resources a given user is willing to use; and c) 'information hiding',
  190. control over which external users are allowed knowledge of a resource.
  191. While these divisions are not necessarily the theoretical minimum, they do
  192. appear to accurately follow the needs of the majority of users; providing
  193. these will make configuration of the system to provide the desired policies
  194. far simpler by virtue of the close match between what is desired and the tools
  195. available to do it.
  196.     BGP will do little to radically increase capabilities in this area.
  197. About the only additional capability provided by BGP will be that since
  198. complete path information to the destination is available, a limited amount of
  199. additional 'trust model' control will be available, as will some 'access
  200. control'. However, as the actual controls are still basically those currently
  201. available, the ills of the existing system remain.
  202.     One thing to note is that while enough policy requirements have been
  203. verbalized to build a general model, no complete list of what will be required
  204. is by any means possible at this point. This means that whatever policy system
  205. is created will have to be able to add new policies as time goes on.
  206.     This latter requirement will be discussed in more detail later. Note
  207. also that the second policy class (trust model) implies control by the source
  208. of the route through the network. This also has substantial implications.
  209.  
  210.     The current restriction on interconnection, which prohibits cycles,
  211. is untenable on reliability grounds (since alternate paths are eliminated) as
  212. well as difficult to enforce. As noted, this restriction is based on the
  213. technical limitations of the EGP protocol, and as BGP is deployed as a
  214. replacement, this limit will fade.
  215.  
  216.     Finally, another problem noted with the current system is the use of
  217. toll networks. This includes not only the cost of running the routing
  218. protocols over such networks, but also distributing the information that
  219. certain paths cost money, and allowing traffic the choice of whether or not to
  220. use such networks. In some sense this latter requirement is a variant of
  221. policy routing, but in another it is yet another requirement, often labelled
  222. 'type of service routing', by which it is meant that different types of
  223. traffic needs links of different characteristics. For instance, remote login
  224. traffic needs low delay links, while bulk data transfer needs high bandwidth.
  225.     In the cases of both type of service, and access control, it is also
  226. necessary to allow for future expansion of the types of each supported, since
  227. it is unlikely that the complete set can be specified at this time.
  228.  
  229. 2.3 Future Requirements
  230.  
  231.     In the category of requirements that are not yet restrictive, but
  232. of which we are becoming aware, one very important one is to provide a
  233. system that is more immune to problems, of both accidental and deliberate
  234. cause. The fact that this system will connect effectively everything means
  235. that great reliance will be placed on it, and equally great confusion will
  236. be caused should it fail. Engineering failures need to be prevented by
  237. thorough simulation as well as use of large scale testbeds. Deliberate
  238. attack needs to be prevented by the inclusion of provisions for security;
  239. these must provide for the use of one of a (extendable) variety of optional
  240. security mechanisms, to allow the cost and level of security to be
  241. optimized depending on the needs and cost of failure.
  242.  
  243.     Another important need is to minimize the amount of configuration
  244. needed, to minimize the possibility of having conflicting configuration
  245. information, and to prevent such conflicting information from causing a
  246. problem. The existing routing architecture suffers from being overly complex
  247. to configure. While this may not be obvious to technically sophisticated
  248. people with long association with the network world, many new users find the
  249. existing architecture confusing and difficult to set up. While they perhaps
  250. expect too much, since you cannot set up a complex system with little or no
  251. study and engineering, improvements can be made. In addition, conflicting
  252. configuration information currently can cause severe problems; this another
  253. reason why such information needs to be minimized. Finally, the architecture
  254. must be robust in response the inevitable errors in configuration.
  255.  
  256.  
  257. 3 Routing and Addressing Fundamentals 
  258.  
  259.     After some consideration of the problem, it became obvious that the
  260. most difficult of the requirements is the size of the system. While some
  261. approaches make light of this problem, they do so at the cost of restrictions
  262. which make other stated requirements difficult to meet. The new routing
  263. architecture had not only to provide capabilities unheard of in the older
  264. system, but also do so in a very large system. Providing the new capabilities
  265. proved to be not so difficult, but the size problem was less tractable. It is
  266. not practical to always provide complete information about every detail of
  267. the connectivity and routing of the entire to everyone; some way of reducing
  268. the data was necessary.
  269.     At this stage it is useful to introduce some technical terms.
  270. 'Compression' is taken to mean reducing one set of routing information to
  271. another which, while more compact, is effectively the same; i.e. would
  272. produce the same routing decisions in all cases. 'Thinning' is taken to mean
  273. discarding some of the data to reduce it to a manageable size. In this case,
  274. routing decisions taken using the thinned data are possibly non-optimal,
  275. since some necessary information is unavailable. 'Abstraction' is a term
  276. including either of these two possible ways of reducing the volume of data.
  277. 'Attenuation' means that information becomes less complete the further you
  278. are from the source of the information.
  279.     However, before we examine this part of the problem in detail, it is
  280. necessary to review some fundamentals of routing and addressing.
  281.  
  282. 3.1 Routing Algorithms
  283.  
  284.     The family of routing algorithms with the most promise is the
  285. 'link-state' (LS) group. They are so named because the information that is
  286. distributed among the nodes running the routing protocol is about the
  287. existence and state of the connecting links in the system (i.e. a topology map
  288. of the system) rather than distances to destinations, as in the
  289. 'distance-vector'(DV) algorithms.
  290.  
  291. 3.1.1 Distance-Vector Algorithms
  292.  
  293.     In a DV algorithm, each node sends to all of its neighbours a
  294. complete table of its distance (measured in some agreed upon metric(s)) to
  295. all the destinations in the system (hence the name). For destinations it can
  296. reach directly, it advertises some low metric; for destinations it reaches
  297. through some neighbour, it lists what that neighbour told it plus some
  298. increment. Each recipient node then compares the advertised distance to the
  299. one it currently has for that destination; if what it just heard was better,
  300. it records it and routes traffic to that destination to the neighbour node
  301. that sent it the update.
  302.     There are many variants, which have been designed to add capabilities
  303. or fix problems with the algorithm, the most common of which are that DV
  304. algorithms tend to form temporary routing loops when the topology changes,
  305. before things stabilize, and that they are unable to detect that a destination
  306. becomes unreachable until the distance to it passes some arbitrary 'infinity'.
  307.  
  308. 3.1.2 Link-State Algorithms
  309.  
  310.     In the simplest form, LS algorithms distribute a complete topology
  311. map to each switching node in the system. This is done quite simply; each
  312. node generates a message describing the state of the links attached to it,
  313. and this message is then quickly flooded through all the nodes in the system
  314. using a reliable flooding protocol. A toplogy map can easily be constructed
  315. from the messages from all the nodes in the system.
  316.     These nodes may then run in parallel an algorithm which generates
  317. from this topology map a routing table which can be used to forward packets
  318. to various destinations. The MILNet is currently using a LS algorithm where
  319. the algorithm which computes the routing table is one due to Dijksta called
  320. the 'Shortest Path First'. [Dijkstra]
  321.     However, it should be noticed that the second step, creation of a
  322. routing table from the topology map, is purely an engineering decision. It is
  323. not necessary to precompute the entire routing table in an LS algorithm,
  324. whereas it is in a DV algorithm, since this precomputed routing table is the
  325. data that is passed on to the neighbour nodes. In an LS algorithm, it is
  326. perfectly plausible to compute routes on demand, from the topology map, and
  327. store them in a cache. This reduces the computational burden substantially,
  328. and, as we shall see, is a key element in the solution.
  329.     Also, in the classic LS routing scheme, the one essential is that all
  330. the nodes run the same route generating algorithm from a consistent map
  331. database, otherwise it is possible to form routing loops when two nodes
  332. disagree about the best 'next hop'. However, if traffic is not routed using
  333. the 'hop-by-hop' method, both of these requirements can be relaxed; this is
  334. critical, as will be seen.
  335.  
  336. 3.2 Routing Algorithm Choice
  337.  
  338.     Several advantages were noted about the LS class of algorithm that
  339. recommended it to the ARPANet implementors [McQuillan]. Most of these are
  340. traceable to the fact that since the baseic DV algorithm is a distributed
  341. algorithm for calculating routes, it is in many senses less robust and
  342. characterizable (in a response time sense, not an ultimate stability after a
  343. single change) than the LS algorithm, which runs in parallel locally on all
  344. machines.
  345.     First, it stabilized quicker after a topology change. This was
  346. important; since the ARPANet used load-based routing, the metrics on links
  347. changed fairly frequently. The speed was due to the fact that when a link
  348. changed state, that fact became know almost instantly everywhere (due to the
  349. fast flooding), after which the nodes all quickly recomputed their routing
  350. tables in parallel, at which point the routing had stabilized in the new
  351. pattern. This is in contrast with DV algorithms, where the effects of a change
  352. in the topology had to pass through computations in each node on its way
  353. across the network; additionally, the process might have to be repeated
  354. several times before the new stable pattern was achieved.
  355.     Second, it detected destinations which had become unreachable more
  356. quickly; this enabled the switches (which offered a reliable transmission
  357. service) to discard packets for the dead destination more quickly, avoiding
  358. buffer congestion from undeliverable and undiscardable traffic in the network.
  359. Third, it was less likely to form loops (formation of which had been a severe
  360. problem under the old DV routing algorithm, due to certain ill-advised
  361. modifications in the algorithm which had promised other gains), and quickly
  362. broke those which did form.
  363.     These advantages were not particularly useful to this application.
  364. Since the system was so large, it was felt that practical load-based routing
  365. was not possible. In such a large system there would be frequent topology
  366. changes in any case; there were concerns that with the added changes of load
  367. based routing that the routing would be less stable. The stability is
  368. certainly useful, but not as crucial when the metrics are essentially static.
  369. Likewise, the other two advantages, while noteable, can be met with
  370. modifications to the basic DV algorithms. 
  371.  
  372.     The DV algorithms do appear have one advantage, which is that they
  373. are apparently more suitable to routing in large nets. Since data is
  374. processed through the routing table before being passed on, they very easily
  375. can be modified to provide attenutation as a way of abstracting data.
  376. (The algorithm is quite simple; as soon as the routes to all the subelements
  377. of a routing element have the same next hop, it is no longer necessary to
  378. send out routing tables listing each subelement individually; a single
  379. entry for the element will suffice.)
  380.     However, this advantage is overwhelmed by a disadvantage, which is
  381. that they cannot easily be enriched to handle the problems of both policy
  382. based and type of service routing (which are technically very similar) without
  383. exponential explosion in the amount of data which must be computed and
  384. transferred. Since route calculation in DV algorithms depends on continuous
  385. calculation of all possible routes in a distributed computation, handling
  386. policy considerations means that routes to all destinations under all
  387. conceivably desirable combinations (or allowed combinations, depending on the
  388. system design) of policy requirement must be maintained. This is the only way
  389. to have a route available for a given destination/policy combination when
  390. traffic for that combination appears (or within any reasonable time of such
  391. traffic appearing, as explained below).
  392.     (A possible fix for this problem involves only computing a routing
  393. table entry for given destination/policy combination when traffic for that
  394. particular combination arrives. Before that traffic could be forwarded,
  395. however, the distributed algorithm would have to run, probably to
  396. stabilization (discovering when that happens would be a good trick in and of
  397. itself), to calculate the next hop at the first hop. This almost certainly
  398. presents an unacceptably long delay before the traffic can be forwarded.)
  399.     In any case, the distributed nature of the DV algorithm requires far
  400. more line bandwidth and computational power than the LS algorithm when
  401. policies are included; in a large network these alone will present substantial
  402. difficulties. Use of a DV algorithm in a world with policy routing
  403. requirements is simple infeasible.
  404.  
  405.     A key component of handling the requirements is the realization that
  406. LS algorithms can handle this problem quite easily. [Chiappa84] Since each
  407. node has a complete map of the system, inclusing all the links, it is quite
  408. easy to indicate on each link what 'attributes', of either policy constraints
  409. or service type, that link possesses. Since the LS algorithms can compute
  410. routes on demand, it is only necessary to create a route for a particular
  411. combination of reqirements when it is needed. It is easy, and costs little,
  412. to tag each link with its attributes before the link information is flooded
  413. through the system.
  414.     It is this characteristic of LS algorithms, that the actual route
  415. calculation is separate from the distribution of the data, and can be delayed,
  416. that is the key one. The fact that the calculation can be delayed (which makes
  417. handling complex policy routing possible) is a fundamental difference between
  418. LS and DV algorithms, and a key reason that DV algorithms are fundamentally
  419. unsuited for use in the new IP routing architecture.
  420.  
  421.     The problem with LS algorithms is that they do require a complete map
  422. of the toplogy. As explained above, this is impractical, due to the size of
  423. the target system. However, it is possible to modify LS algorithms to use
  424. abstraction, so this is the approach chosen. This decision brings other
  425. problems, though.
  426.     It turns out that compression alone is not an adequate means of
  427. attack on the problem. There are too many topologies that simply cannot be
  428. represented by a simpler but equivalent topology. Since the data must be
  429. reduced to make the problem manageable, it is necessary to discard some, and
  430. use thinning. The ramification of this step is that when routing data is
  431. thinned, the lost information means that in many cases the system will fail
  432. to detect possible routes with the required characteristics. This can lead to
  433. the creation of non-optimal routes, or in the worst case, failure to find any
  434. route at all, even though one does in fact exist.
  435.     The hardest problem thus becomes managing the discarding of
  436. information, based on cost-benfit tradeoffs which the protocol cannot possibly
  437. comprehend. Simply put, data must be discarded to make the cost of running the
  438. protocol reasonable. However, taking this step has a cost elsewhere, in
  439. non-optimal traffic routing; the problem is a classic cost-benfit tradeoff.
  440. Thus, thinning involves value judgements, and is thus a matter of policy as
  441. well as a technical problem.
  442.     The ramifications of these issues will be addressed later.
  443.  
  444. 3.3 Addressing Fundamentals
  445.  
  446.     Before moving on to review the proposed architecture, the final piece
  447. of background that is necessary is to briefly review the fundamental network
  448. concepts of addresses, routes, etc. 
  449.     Although a number of papers have been written on the subject of
  450. addresses and routes [Shoch] [Saltzer82], a considerable lack of understanding
  451. of the basic aspects of these fundamental concepts still remains. Readers need
  452. to be clear in their minds the difference between fundamental concepts (and
  453. the objects which are the concrete instantiations of these fundamentals), and
  454. the different kinds of names (and the reasons for and uses of these names)
  455. which we may give these objects.
  456.  
  457. 3.3.1 Object Spaces and Names
  458.  
  459.     There has been confusion as to exactly what the fundamental object
  460. spaces of networking are; most previous architectures have tried to make do
  461. with too few. Previous work has also pointed out that common practise in
  462. networking has been to too tightly bind the forms of names for these objects
  463. to the objects themselves.
  464.     Two key object spaces used in this architecture are i) the node
  465. identifier, which indicates one particular computing node to which packets
  466. may be delivered, and ii) the network address, which specifies an attachment
  467. point to the network; a network interface to which traffic may be routed. (In
  468. fact, the term "address" is usually taken to refer to a particular kind of
  469. name for a network attachment point.) Multicast concepts are not considered
  470. here, since multicast can be built as a layer on top of this, and is thus less
  471. fundamental.
  472.  
  473.     Each of these object types may have one or more kinds of names. The
  474. names may or may not haves structure. Names with structure are invariably
  475. adopted to make some mechanism (often a mapping from that name to something
  476. else) easier to implement. For instance, a attachment point may be identified
  477. either by a unique, fixed length binary flat identifier (e.g. an Ethernet
  478. interface number in a bridged network), or, as is more usual, a structured
  479. heirarchical form (e.g. a typical IP address). In addition, there are mappings
  480. between names and objects, and between different object classes.
  481.     As was mentioned, problems in thinking about the issues of routing and
  482. addressing can occur when these object spaces are not clearly differentiated,
  483. or when the form of the name for an object is not separated from the concept
  484. of the object. An example of the former is the lack of distinction in the IP
  485. architecture between attachment points and node identifiers; this has left us
  486. with great difficulties in handling multi-homed hosts and mobile hosts. An
  487. example of the latter is that a network address is usually taken to be a
  488. structured heirarchical item, but this is in fact just one possible way of
  489. naming attachment points; a very useful name, to be sure, but not the only
  490. one.
  491.     
  492.     Whenever one has different classes of objects, and names for them,
  493. several questions immediately arise. The first is "do we have the right
  494. classes", second "what is the mapping between the classes of objects", third
  495. is "how many names, and of what form, do we have for each class of object",
  496. and fourth "what is the mapping between the names and objects".
  497.     The mappings form the heart of the power, and the problems. Two
  498. aphorisms of computer science illustrate this: the first (due to B. Lampson)
  499. is "All problems in Computer Science can be solved by adding another level of
  500. indirection"; the second (due to D. Clark) is "The function of an operating
  501. system is to establish many different names for the same object, so that it
  502. may busy itself keeping track of the mappings between the various names."
  503.      Do we have the right fundamental objects? Exactly which names and
  504. mappings are useful in this instance?
  505.  
  506. 3.3.2 Names and Mappings
  507.  
  508.     It is clear that the two object classes named are highly useful. Are
  509. there any remaining problems, the solution to which requires yet another
  510. object class (and associated mappings)? Only one appears possible; the problem
  511. of heirarchical addresses implying heirarchical routes. This topic cannot be
  512. treated in full at this point in the document; the architecture as given
  513. solves this problem, but perhaps not in an efficient enough way. It may be
  514. necessary to add an extra object class to deal with it. For the moment,
  515. however, the answer appears to be that the two mentioned are enough.
  516.     As to the mappings among the classes, this also appears simple enough.
  517. Just as in the real world, a single node may have several network interfaces,
  518. a single node identifier may map to more than one attachment point. Also, just
  519. as hosts may move, the mapping from a node identifier to a network attachment
  520. point may change.
  521.  
  522.     The only namespace for nodes which appears to be useful is a
  523. relatively short, fixed length, pseudo-flat binary identifier. This name is
  524. intended for solely for globally unique identifaction of nodes, and for
  525. efficient processing by automatons; this dictates the form of the name. (Since
  526. the space will probably be split up to various number assignment authorities
  527. for each of administration, it only appears to be flat.) Since it appears (for
  528. reasons to appear below) that the most useful form of the network address is
  529. long and complex, having at least one name for the destination in the packet
  530. which is easy to manipulate is desireable. There does not appear to be a use
  531. for a different kind of node identifier at the moment, but it could be added
  532. if need be.
  533.     This is obviously in addition to the existing domain names, which are
  534. heirarchical character string names for hosts. These names are obviously
  535. intended to be useful to humans, and the structure in them is intended to make
  536. interpretation by a distributed database (the Domain Name System) easier. It
  537. is entirely feasible that domain names which represent, for example, services
  538. could map to more than one node identifier, but that is a different issue.
  539.  
  540.     The names of network attachment points, the address, present a more
  541. interesting problem. An address usually does two things. First, it uniquely
  542. identifies a connection point to the network. Second, it does so in a
  543. structured manner, which allows something useful to be done with it. Exactly
  544. what that structure is depends on what other uses it is put to; most often the
  545. structure of the address is used in routing.
  546.     Normally, groups of attachment points which are topologically related
  547. are given related addresses. Usually, this allows the number of different
  548. destinations which must be tracked in the various routing devices througout
  549. the network to be reduced (in its simplest form, this allows routing tables to
  550. be smaller). That is, rather than keep knowledge of all the individual network
  551. attachment points, a routing device can keep information on collections of
  552. network attachment points, at a considerable savings.
  553.     It may have other benefits; in this architecture, it also does several
  554. other very important things. First, the structured address allows the point on
  555. the topology graph which the address names to be found easily, without mapping
  556. through any additional object class, or other attachment point name. Second,
  557. it helps provides a representation by which topology information can be
  558. distributed. Third, the structure of the address space provides a framework
  559. for the abstraction process by which simplified graphs of the topology are
  560. created.
  561.     Finally, in the current version of this architecture, the address
  562. (which is heirarchical) in involved in creating those routes which take the
  563. least amount of effort to compute (sometimes called "no-brainer" routes),
  564. that route being basically heirarchical. (It is this latter function which may
  565. prove inefficient to overload onto the address of a network attachment point,
  566. necessitating the creation of a different object class or naming space for
  567. network attachment points.)
  568.  
  569.     Note that all these functions are usually performed by a single
  570. kind of name, a structured address. However, other possibilities have been
  571. suugested.
  572.     One proposal is that each network attachment point be given a unique
  573. binary flat identifier; this would allow the creation of multiple,
  574. independant, structured namespaces (i.e. address spaces), each of which have a
  575. separate mapping into the first namespace which identifies all attachment
  576. points. The claimed advantages are that it would be possible to experiment
  577. with new addressing schemes, or introduce a new one, or even operate with
  578. several different ones in use at the same time.
  579.     This possibility has been discarded in this architecture, however. The
  580. whole point of an addressing system is to allow traffic to flow between all
  581. the myriad parts of the Internet. To do that, it is necessary to pass around
  582. routing information, and the form in which this is passed around is inevitably
  583. that of addresses. A new address scheme, resulting in an address form which
  584. the old routing architecture did not understand, would inevitably interrupt
  585. this flow.
  586.     Moreover, should it be necessary to supersede the addressing scheme in
  587. this architecture (if adopted), it would be just as easy to create a new
  588. mapping from node identifiers to attachment points as it would to create a new
  589. mapping from attachment point names to attachment points. Alternatively,
  590. mappings could be created from old attachment point names to new ones
  591. directly. No good reason can be seen for the flat namespace for attachment
  592. points, so incurring the cost of it should clearly be avoided.
  593.  
  594.  
  595. 4 Routing and Addressing Architecture
  596.  
  597.     It is necessary to consider some ramifications of some of the
  598. requirements in detail, and the steps taken to meet them, before the entire
  599. architecture can be outlined.
  600.  
  601. 4.1 Requirement Ramifications
  602.  
  603.     The two major ones have to do with the trust model requirement, and
  604. the ability to expand the attribute list.
  605.     Briefly stated, the trust model problems is that some users may have
  606. policies on which links they will and will not use that cannot be described
  607. in anything less than a general purpose computational notation. Moreover, in
  608. the most extreme cases, some users may not trust outside agents to pick a
  609. route for their data, even given a complete statement of their requirements.
  610. This means that computations in intermediate nodes cannot be used to route
  611. traffic. This flies in the face of the current architecture, which assumes
  612. traffic is routed on a hop-by-hop basis; i.e. each switching node makes an
  613. independant decision on what to do with the traffic.
  614.     The attribute list problem is a more general consequence of the
  615. specific observation above, in the discussion of the requirements, that it is
  616. probably not possible to completely specify what policy attributes will be
  617. needed at the moment. If the new system is to last, it must be able to change
  618. and expand its capabilities. To do this, it is necessary to be able to invent
  619. new types of attributes for links, and phase them in incrementally (since
  620. such changes cannot be coordinated instantaeously across a large system).
  621. This presents a problem, since this seems to violate the restriction given
  622. about in the discussion of LS algorithms, namely, that all the nodes run the
  623. same route generating algorithm. If one node is taking certain attributes on
  624. links (and requests to use them in packets) into consideration when
  625. generating routes, and another is not, this can potentially form routing
  626. loops.
  627.     These two problems appear substantial, yet both can be solved by the
  628. same mechanism. In addition, that mechanism allows yet more problems to be
  629. solved, as detailed below.
  630.  
  631. 4.2 Architectural outline
  632.  
  633.     The general outline of the architecture is as follows (each element
  634. will be discussed in more detail below).
  635.     The routing architecture will be a multi-level area (i.e.
  636. heirarchical) LS system; in the topology graph representation of the network,
  637. links and nodes have attributes. The exact algorithm for generating routes,
  638. given the topology map, is not specified as part of the protocol (but a
  639. default algorithm can be provided as an appendix). Abstraction of data will be
  640. determined primarily by external mechanisms (although a simple default will be
  641. provided either as part of the protocol or as an appendix), and in any case
  642. clients are not bound to accept any abstraction unconditionally. Routes will
  643. be completely determined by the initiator of the traffic; i.e. all packets
  644. will be source routed. Packets will belong to ephemeral associations called
  645. 'flows'. (There may be other forces acting on the architecture which make
  646. flows desirable; if so, several things can be done with this new mechanism.)
  647.     A new kind of address will be created, for use in making routing
  648. decisions. The existing IP address field will be retained as well (exactly as
  649. is in the short term), but the contents will be put to slightly different use
  650. as a node identifier.
  651.     In the short term, hosts will continue to operate with no changes at
  652. all, and use the existing packet formats for their interactions with routers,
  653. although there will be certain optional optimizations that speed things up,
  654. but are not necessary. In the long term, a transition to a longer version of
  655. the node identifier (the old IP address) will be necessary. A number of
  656. factors will probably eventually combine to cause the definition of a new IP
  657. packet format, but most of those forces are outside the scope of this
  658. document; however, phasing this longer version in will probably occur as part
  659. of that transition.
  660.  
  661.     A key thing to notice about this architecture is what is not part of
  662. the architecture and protocol. Neither the algorithm to create routes from
  663. the topology database, nor the exact method by which abstraction occurs are
  664. part of the architecture. These are also the two hardest problems, and the
  665. two in which future work is most likely to bring improvements. It is a key
  666. feature of this proposed architecture that these two areas can be left
  667. outside the scope of the protocol; future improvements can be easily phased
  668. in incrementally.
  669.       Route generation in this architecture will need routing algorithms
  670. which have a different goal from most existing work, such as the Dijkstra
  671. algorithm. Most known routing algorithms create an entire routing table of
  672. optimal routes to all destinations; since this has been what was needed in the
  673. past, this is the area in which most research has occurred. The problem of
  674. finding the optimal (or a good approximation thereof, within limits) route
  675. between two points in a graph, ignoring other destinations, has not been
  676. a topic of much work. This only increases the need to leave flexibility in
  677. this area; improvements in algorithms and heuristics tend to be slow to
  678. appear.
  679.  
  680.     The things which are part of the routing architecture and protocol are
  681. a way of representing and characterizing the network topology, a way to
  682. distribute this information, and a way to set up traffic flows. Everything
  683. else can be left and specified later; a key to the power and flexibility, as
  684. well as the ability to last (gracefully), of this architecture.
  685.     Upon some reflection this seems likely to be a theoretical minimum
  686. for performing those tasks. It is not clear whether the fact that the two
  687. hardest problems are left outside is fortuitous or a reflection of some
  688. deeper correctness. In any case, the minimal design does limit the amount of
  689. work to be done, as well as limit the possibility that something will be done
  690. wrong or in an inflexible way.
  691.     "Perfection has been attained, not when there is nothing left to add,
  692. but when there is nothing left to take away." [Corbato]
  693.  
  694. 4.2.1 Multi-level LS Algorithm
  695.  
  696.     The LS class of algorithm is chosen, basically for the reasons listed
  697. above in the discussion of these algorithms. It is really the only practical
  698. way to handle a system with complex acccess restrictions on links which form
  699. a key part of policy considerations. The expandable attibute list allows
  700. future growth.
  701.     The algorithm has to be multi-level to handle the very large amount of
  702. link state in the system. Even if the system were restricted to distributing
  703. information about AS's, the general consensus is that a single level will not
  704. be able to handle the number of AS's we expect to be deployed in the
  705. reasonable future.
  706.  
  707.     However, it is also felt that the time and need for AS's, and the
  708. strict division of routing in inter- and intra-AS, is past. AS's are a limited
  709. and simplistic mechanism that was created long ago to fulfill certain limited
  710. goals, primarily that of providing routing firewalls; since the new
  711. architecture can do all these, and better than the AS concept, it is now
  712. entirely appropriate to discard AS's. (This does not mean that the concept of
  713. policy groupings would be discarded; far from it. What it does mean is that
  714. there will not be a particular layer which is called out for special
  715. treatment.)
  716.     The primary reason for the introduction of AS's was to provide some
  717. routing firewalls in the system. Since the new architecture will problem more
  718. flexible and robust firewalls, retaining the archaic AS mechanism is
  719. pointless. An additional advantage of AS's (and the division of the task of
  720. routing between IGP's and EGP's) was to allow different routing technologies
  721. to be used. The extreme power and flexibility of the new architecture makes
  722. this less useful, and in any case, the fact that the process by which the
  723. representation of an area is constructed (the abstraction process) is not in
  724. the scope of the protocol means it would still be possible to use other
  725. routing technology within an area, and pass the results of that process up as
  726. the representation of the topology of the area.
  727.     The new system would be responsible for all routing in the IP
  728. architecture; it would be able to depict, at its lowest level, the physical
  729. transmission assets of the system. This unification of routing would not only
  730. reduce the complexity (and likelihood of problems, implementation and
  731. configuration cost, etc), but bring the full power and flexibility of the
  732. new architecture to bear at all levels. A number of problems exist today
  733. because of the split between inter and intra-AS routing; removal of this
  734. artificial barrier allows greater flexibility.
  735.  
  736.     The use of a link-state architecture does bring with it the attendant
  737. difficulties of how to abstract link-state data. The use of thinning,
  738. necessary for useful abstraction, brings with it the difficult task of chosing
  739. which data to discard, and the problems caused by loss of the discarded
  740. information. As noted above, this cannot be solved by purely technical means;
  741. value judgements must be made about which information to discard. It will be
  742. usually be necessary for the administrators of any given area to help decide
  743. what the representation of that area will be when the internal details are
  744. hidden.
  745.     Since this is now a problem of entering configuration information, it
  746. is desireable to do this in a way that allows no chance for inconsistent data.
  747. A default algorithm will also be provided, for those who do not care what the
  748. representation of their area is, or are unsophisticated and cannot participate
  749. in chosing the representation of their area. The fact that there is no
  750. specified algorithm for doing this also allows improved default algorithms to
  751. be incrementally deployed as they are conceived.
  752.     However, the problem of non-optimal or unfound routes remains. The
  753. solution to this part of the puzzle requires the next key component.
  754.  
  755. 4.2.2 Source Routing
  756.  
  757.     The source routing is a necessary consequence of both the trust model
  758. part of policy considerations, and the expandable attribute list, as outlined
  759. above. Having the source set the route avoids both of these difficulties. As
  760. mentioned, it also allows the incremental deployment of better algorithms for
  761. creating routes as ongoing research provides them, and also provides a means
  762. to attack the non-optimal route problem, as noted immediately above.
  763.  
  764.     Note that the route (nor indeed, the new style address) is not
  765. necessarily carried in each and every packet; this is an engineering decision
  766. to be made on the basis of the costs and benefits of doing so. The costs are
  767. primarily the increased overheard of carrying around the extra data. There is
  768. another issue in that the existing IP packet format will probably not allow
  769. 'on the fly' modification to hold the source route, since the latter will
  770. probably be too large to fit into the IP header. Depending on the length of
  771. the addresses, these could be a problem as well. This could be solved by
  772. 'wrapping' the packets, but at considerable cost in complexity and switching
  773. speed (and some in line utilization).
  774.     The benfits of carrying the source route and/or address in each packet
  775. are that the routers may remain more stateless. It is anticipated that routes
  776. will not be carried in packets, and there will be a 'route set-up', as part of
  777. the 'flow set-up', which happens invisbly to the client of the packet layer.
  778. This flow will not be critical state, like a connection, but rather a hint. (A
  779. 'hint' is data which allows processing to be optimized, but which is does not
  780. have to be present to allow correct operation.) This may be recreated by the
  781. routers without reference to the source of the flow setup should any
  782. intervening node fail.
  783.  
  784.     Obviously, since the source (or an agent close to it) choses the
  785. entire route, it is trivial for the source to enforce whatever constraints it
  786. wishes on the path that its traffic takes (even constraints which are not
  787. stateable in anything less than a general purpose computational language).
  788. Alternatively, if the agent computes routes using links with attributes it
  789. understands, but which the intervening switching nodes do not, the traffic
  790. will be routing correctly, their lack of comprehension notwithstanding.
  791.     Also, if in computing a route, the agent generating the route comes
  792. across an attribute it does not understand (either because it was recently
  793. introduced, and the agent does not yet know how to deal with it, or because
  794. it is a private attribute which the agent will never understand), the
  795. agent will still be able to compute a route. If all attributes carry some
  796. limited information about whether they are restrictive (certain types of
  797. traffic will not be allowed across) or informational (giving information
  798. about the link) it would be possible for a route to use links which have
  799. attributes the agent does not understand.
  800.  
  801.     Since the entire route is calculated by one agent, it clearly does
  802. not matter if different agents use different algorithms for generating
  803. routes. Deployment of new algorithms, or a choice between several existing
  804. ones (for example, one which is fast but which does not produce good routes
  805. would be useful for one-shot traffic, whereas more complex and expensive
  806. ones would be appropriate for long-lived flows sending a lot of data)
  807. thus becomes trivial. [SalzterSR]
  808.  
  809. 4.2.3 Local Abstraction Control
  810.  
  811.     As for the non-optimal route problem, it was noted above that the use
  812. of hop-by-hop routing required both a consistent algorithm and a consistent
  813. database. Discarding hop-by-hop routing allows relaxation of the latter
  814. requirement as well. This allows a powerful (and previously unconsidered)
  815. adaption of the typical operation of an LS algorithm. Canonical LS algorithms
  816. require everyone to have an equivalent map.
  817.     ("Equivalent" is used instead of "identical" since in existing
  818. multi-level protocols such as OSPF, agents in different areas will each have
  819. (identical) top level maps, as well as maps of their own area, but of course
  820. these latter maps are different. All routers within a single area, however,
  821. will (and must) have identical maps.)
  822.  
  823.     However, there is no requirement in this architecture that this be so.
  824. Neighbouring routers at the same level may have wildly different maps. One
  825. might have only a default representation of a neighbouring area; another,
  826. which is sending a lot of traffic into that area, might have detail on the
  827. internal connectivity of that area, to allow it to pick the optimal entry
  828. router into that area for the traffic it is handling. Any node may call for
  829. more detailed topology information about any part of the system it wants,
  830. provided that that information is accessible to it, and the cost of providing
  831. that information are borne somehow.
  832.     However, the implications of lifting this restriction are
  833. considerable. As noted above, the thinning problem is essentially a
  834. cost-benfit tradeoff; making this tradeoff at the area which is being
  835. described imposes the area's idea of the correct cost-benefit tradeoff on
  836. everyone. However, allowing each route generator to make its own decision on
  837. how much detail to keep in its maps allows this cost-benfit tradeoff to be
  838. made at the client, i.e. with far greater flexibility.
  839.     It will be necessary for the costs of keeping maps with more detail
  840. to be shifted to those agents which wish to keep them; this will require
  841. attention at the time that accounting and resource usage algorithms are
  842. brought to the network.
  843.     The default abstraction algorithm is thus seen as that which will
  844. provide the theoretical minimum of data necessary to route traffic through the
  845. system. The actual routes taken by traffic under this algorithm will thus be
  846. strictly heirarchical. Looked at another way, local abstraction control thus
  847. allows a way to do non-heirarchical routing.
  848.  
  849.  
  850. 5 Details of the Architecture
  851.  
  852.     Many of the components necessary to this routing architure and
  853. protocol can be 'borrowed' from the work being done on the Open Routing
  854. system, and similar LS systems such as the ARPANet algorithm, OSPF [Moy], etc.
  855. These include the mechanisms to do reliable database distribution and flow
  856. setup. According, description of these solved problems will be skipped in this
  857. document.
  858.     This section includes more detail on certain key parts of the
  859. architecture, along with calling attention to those parts in which engineering
  860. questions remain.
  861.  
  862. 5.1 Multi-Level Topological Representation
  863.  
  864.     The first step is to consider the maps (graphs, actually) which
  865. represent the actual detailed topology. It is worth noting that in the graph
  866. representation of typical networks, there are usually two kinds of nodes;
  867. 'network' nodes and 'router' nodes. The arcs then represent network
  868. interfaces. It is possible to have only a single kind of node (either
  869. networks or routers), but this is artificial, loses valuable information, and
  870. is more difficult to work with in practice than the more complex version.
  871. This architecture will almost certainly use this type of model.
  872.     In the maps, it will be possible to take an contiguous section of the
  873. graph (i.e. some number of nodes and their connecting arcs), and reduce it to
  874. a simpler representation. Such a reduced section is called an 'area'. Areas
  875. may be nested, and areas have as an attribute a level; an area which contains
  876. another area has a level one higher than the contained area.
  877.     It is unclear whether an area will need to be represented as a section
  878. of graph, or just a node. In either case, a new type of node for an area is
  879. probably needed. The issue probably hangs on whether the rules for
  880. constructing topologies demand router nodes between area nodes or not. In the
  881. former case, the minimum representation of an area would be the collection of
  882. border routers plus a pseudo-node for all the rest of the topology of the
  883. area, to which the border routers are connected. If the area has complex
  884. transit policies which vary depending on which pairwise set of border routers
  885. are picked, a more complex representation allowing this to be expressed would
  886. of course be necessary.
  887.  
  888.     It is not clear whether it is best to allow only 'strict' reduction,
  889. in which an area of level k would be allowed to contain only obects of level
  890. k-1, or whether 'loose' reduction, in which objects of varying levels less
  891. than k could be contained, is preferable. The latter is clearly more flexible,
  892. but might make the engineering more complex. This decision can probably be put
  893. off until the detail design happens. What is important is to realize that the
  894. division into areas provides the framework for the default abstraction
  895. algorithm; agents outside an area will not in general have detailed
  896. information on the internal topology of the area.
  897.  
  898.     On the subject of border routers, it seems wisest to set the rule
  899. that all routers belong to a single area. This is a good match to reality,
  900. where most of the physical assets have an owner; the half-router model has
  901. proven to be less useful in practise.
  902.     One aspect of representation that needs to be addressed is the
  903. question of configuration errors; this is the most likely place for such
  904. errors. One technique that appears useful is to simply indicate to each router
  905. whether or not it is a boundary router for a k level area, not which k level
  906. area it belongs to [BBN]. Thus, misconfiguration of a router simply joins two
  907. k-level areas togther, but has no other ill effects on the routing. Similar
  908. approaches must be taken throughout this aspect to minimize configuration
  909. and prevent configuration errors from being a major problem.
  910.  
  911.     In any case, it is clear that some decisions about open questions
  912. need to be taken about the multi-level topology representation before any
  913. other parts of the design can be worked on in detail. Obviously, these
  914. decisions may need to be revisited if work elsewhere reveals that a poor
  915. choice has made the design of some other part more complex than need be.
  916.  
  917. 5.2 Multi-Level Addresses
  918.  
  919.     The address format chosen will need to map closely onto the
  920. representation of network topology, which in turn is chose to make the job of
  921. the routing simple. Remember, the address is simply a way of naming an
  922. attachment point to the network, in other words, specifying a place in the
  923. graph, and it is essential that given an address, it must be easy to correlate
  924. that address with its location in the topology graph easily. (It might be
  925. argued that the 'address' need not have that property, but it might map to
  926. something else which does. All that is saying is that terminology has been
  927. confused, and the wrong name for a network attachment point has been called
  928. the address. The final concept will inevitably have to be one which is easy to
  929. locate.)
  930.     In essence, what is proposed is a multi-level heirarchy, with a
  931. variable number of levels, each of variable length. This may seem like
  932. overkill, but remember that these addresses are only needed to create flows,
  933. and since the cost is minimal it is better to have too much flexibility than
  934. too little. The mapping from addresses to the map is fairly simple; the first
  935. element of the address identifies which top level area an address is in, the
  936. next element which of the next level areas within that top level area, and so
  937. on.
  938.  
  939.     In any event, the bottom level will be the level representing real
  940. physical assets, and numbering will proceed up from there. The advantage of
  941. this is that two different systems with differing address spaces, each
  942. allocated without reference to the other, can be joined by the simple
  943. expedient of creating a new level above the top of each existing system and
  944. making each system appear as a simple object in that level. [Reed]
  945. Alternatively, a small independantly numbered system could be joined onto a
  946. large existing system as a branch at the appropriate level.
  947.     This will also avoid useless arguments about whether or not something
  948. deserves to be a 'top-level' area or not. Since there is no such thing as a
  949. top-level area, pointless fights over status should mostly be avoidable. Note
  950. that good functioning of the resulting system demands proper engineering of
  951. the topology, and of the areas; since the area definitions provide the
  952. framework for the abstraction process, which in turn affects the default
  953. heirarchical routing, a poor choice of area boundaries will cause the default
  954. abstraction process, and the default heirarchical routing, to work less well,
  955. although it will continue to function.
  956.  
  957.     The analogue in the adressing area to the question of only allowing
  958. 'strict' areas is whether or not networks (and presumably hosts and routers
  959. as well) can have numbers at any but the lowest level. If a k level area is
  960. allowed to contain physical assets, presumably they can be addressed with
  961. k-1 level addresses, without going all the way down to the bottom level.
  962.     The question of exactly what form the addresses of networks and
  963. routers (if any) take is open. In the current architecture, no real provision
  964. was made for numbering networks, although the convention of a zero 'rest'
  965. field has come to mean the network. Routers are currently indistinguisable
  966. from hosts (which is good and bad). In the new systems, hosts will not have
  967. addresses per se; the lowest level item which can be addressed is a network
  968. interface, and presumably typical hosts will have one each.
  969.  
  970.     Once again, choices have to be made, but with the understanding that
  971. they may have to be revisited in light of work elsewhere on the architecture.
  972.  
  973. 5.3 Topology Information Flooding and Route Generation
  974.  
  975.     It is next necessary to consider the question of which devices perform
  976. these functions. It seems most plausible that the first function is co-located
  977. in the routers themselves, for reasons of fate-sharing; connectivity
  978. information is flooded through the very connection elements that are being
  979. described. This also removes dependency loops where topology flooding agents
  980. which are not routers are required to make contact with neighbour topology
  981. flooding agents through routers.
  982.     Route generation could, however, quite easily be performed in separate
  983. devices, which communicate with routers (both local, and distant if they wish
  984. to have detailed information about distant areas). It might be useful to build
  985. this function into routers, but this is an implementation decision. Certainly,
  986. clients with complex policy requirements will probably desire to generate
  987. their own routes.
  988.  
  989. 5.4 The Default Abstraction Algorithm and Local Abstraction Control
  990.  
  991.     Given the discussion above, the default abstraction algorithm is very
  992. simple. As stated above, the division into areas provides the framework for
  993. the default abstraction algorithm. The routers which are border routers for an
  994. area are responsible for doing the abstraction on the area topology when it is
  995. advertised outside the area.
  996.     Two possibilities exist for a simple algorithm to provide a default
  997. representation of an area. One, the N^2 model, maps the area as a complete set
  998. of connections between all the border routers. This model can fairly
  999. accurately represent the true characteristics of the connection between any
  1000. two pairs of routers. (Of course, how to do so in the presence of policies
  1001. and types of service, where a multitude of possibile connections are possible,
  1002. will require a bit of work; probably the least policy-limited path should be
  1003. advertized.) In the other, the pseudo-node model, all the border routers are
  1004. connected to a single node in the center. This cannot accurately represent the
  1005. metrics between any two border routers, but an averaging system will give a
  1006. good guess.
  1007.     The option is always available to go to a representation with human
  1008. input, or to a representation prepared by some other algorithm. Some control
  1009. needs to be created to prevent areas from flooding the system with
  1010. unnecessarily complex representations of themselves.
  1011.     Of course, if an area is represented solely by a single pseudo-node,
  1012. none of these problems arise, which is the attraction of this possible way of
  1013. representing an area. The disadvantage is that then areas must have transit
  1014. attributes which mirror the attributes (both policy and type of service) on
  1015. the actual transmission links which connect the border routers.
  1016.  
  1017.     The working of the local abstraction control (somewhat inelegantly
  1018. named the "Blister Model") is simple to understand in this context. Generally,
  1019. any routing agent outside an area is given, as a default, whatever
  1020. representation that area has decided to purvey. However, should a routing
  1021. agent wish a more detail of a non-local part of the map, nothing is to stop it
  1022. (other than information-hiding access control, of course) getting the
  1023. information and upgrading its map.
  1024.  
  1025. 5.5 Virtual Links and Flow Repair
  1026.  
  1027.     One concept which will probably appear as part of the representation
  1028. of an area is that of a virtual link. Where it is desired to describe the
  1029. connection between two border routers, without providing detail on the
  1030. constituent links which actually connect the two, a virtual link (with
  1031. the attributes of the complete path between the two) could be advertised.
  1032.     One key aspect of this idea is the ability to do local repair on flows
  1033. when topology changes happen. If a virtual link at level k, which was
  1034. advertised to a source route generator and which is used in creating a flow,
  1035. suffers a component failure, two outcomes are possible. First, the virtual
  1036. link may be reconstituted with the same attributes using other lower level
  1037. assets. In this case, the repair would be local, with no necessity for
  1038. intervention on the part of the source route creator. As an option it might be
  1039. notified if some attribute, such as delay, increased more than an allowable
  1040. amount on some component it used in setting up a flow. Second, if such a
  1041. reconstitution cannot be made, the k+1 level virtual link of which the k level
  1042. link is a constituent is notified, and the algorithm is then run recursively
  1043. at a higher level. Only if some asset which the source route creator fails
  1044. would it be necessary for the creator to select a new path for the flow.
  1045.  
  1046. 5.6 Partitioned Areas
  1047.  
  1048.     Handling of partitioned areas needs to be addressed. A number of
  1049. methods are possible. One obvious method is to reconnect the two parts of the
  1050. partitioned area by going through another area.
  1051.     Another elegant method gives each level 1 area a globally unique
  1052. identifier. A k level area is given the identifier (at k level) of the lowest
  1053. (or highest, or some unique algorithm) numbered k-1 level area within it.
  1054. Then, if a k level area partitions, it automatically creates a new k level
  1055. area, which is automatically numbered from its constituent k-1 level areas.
  1056. The disadvantage of this is that the address of everything within the new k
  1057. level area has changed, which is probably a substantial disadvantage (although
  1058. not insuperable).
  1059.  
  1060. 5.7 The Node ID 
  1061.  
  1062.     The node identifier (what used to be the IP address) is a key part of
  1063. the system; not only does it provide new capabilities, but it makes the new
  1064. system incrementally deployable. Instead of being a number with structure, as
  1065. it is currently (which is causing inefficient use of the number space), it is
  1066. simply a unique 32-bit (initially) number. That way, we put off the day when
  1067. that address space runs out, since we can use it efficiently instead of
  1068. wasting large gaps, as we do now.
  1069.     A number of outstanding issues, particularly mobile hosts and
  1070. multi-homed hosts, can be solved with this, with no change to the upper
  1071. levels. An open TCP connection to a given node identifier will stay open even
  1072. if the node moves and gets a new address. (The flow may need to be rehomed,
  1073. but this will be invisible to the TCP, and perhaps to the host entirely.) If
  1074. an explicit mapping exists from a node identifier to multiple addresses, many
  1075. issues having to do with multi-homed hosts (both for reliability as well as
  1076. bandwidth) become much simpler.
  1077.     The source and destination of packets in the network will continue to
  1078. be identified by these identifiers. If we chose not to include the new
  1079. addresses in each packet (as seems likely), a packet arriving at a router is
  1080. assigned to a particular flow by inspecting these numbers. This process will
  1081. be at least as quick as current routing, and if the addresses are not included
  1082. in the packets, there will be no extra line overhead either.
  1083.  
  1084. 5.8 Mapping to the Address, from the Name and from the Node ID
  1085.  
  1086.     Obviously, a system for providing the new addresses, and mapping
  1087. between them and other identifiers, such as host names and identifiers, needs
  1088. to be available. It clearly ought to be distributed and replicated. We already
  1089. have a distributed replicated system for containing mappings; the DNS. It
  1090. would probably be simple to add this mapping as well.
  1091.     When going from the string name, the obvious thing is to return the
  1092. new address as well. For clients which need to map from node identifiers to
  1093. addresses, some analogue of IN-ADDR will have to be provided.
  1094.     One thing to be careful of is that in the process no dependency loops
  1095. are formed. For instance, error reporting might need to get an address if all
  1096. that is on hand is a packet with the node identifier. The actual process of
  1097. getting routing information around would have to be examined carefully to make
  1098. sure it does not rely on the existence of this mapping system, otherwise
  1099. dependency loops will certainly form.
  1100.  
  1101. 5.9 A Sample Route Generation Algorithm
  1102.  
  1103.     One simple way of generating a route in a complex policy environment
  1104. is to run over the map, dropping all links which are unusable for policy
  1105. reasons or because they do not match the type of service desired. It would
  1106. then be possible to run the Dijkstra algorithm to create a routing tree, and
  1107. thus a route, for a given metric which is it desired to minimize (probably
  1108. delay or cost). To optimize several metrics at once, a formula for weighing
  1109. the metrics together to create a composite metric needs to be provided; as
  1110. each link is examined in the Dijkstra, the composite metric will be calculated
  1111. from the exact metrics of the link, and the composite metric will be what the
  1112. Dijksta minimizes.
  1113.     Metrics such as bandwidth, or MTU, where minimization over a path is
  1114. inappropriate, would be handled by dropping inappropriate links in the first
  1115. phase; if no route can be found, the actual requirement on this metric could
  1116. be lowered and the process repeated to see if a route appears when a less
  1117. optimal value is allowed.
  1118.  
  1119. 5.10 Authentication and Robustness
  1120.  
  1121.     Making the system robust against attack is vitally necessary. One
  1122. approach would be to tag all data with a private key system; this guarantees
  1123. that topology information could not be modified as it is flooded through
  1124. the system. The same approach could be used in flow setup; acknowledgements
  1125. tagged with the private key would prevent the flow from being hijacked to
  1126. a different destination by a corrupted switch (although it could be copied).
  1127.     Protection against denial of service attacks are more difficult. In
  1128. the above example, the corrupted switch could prevent the flow from being
  1129. set up, although it cannot make it appear that the flow has been correctly
  1130. set up when it cannot. Of course, if the switch refuses to set up the flow,
  1131. an alternate path could be picked which avoids that switch.
  1132.     Another difficult problem is bogus connectivity information. Some
  1133. checks can be made, such as ensuring that both ends of a link agree that it
  1134. exists, but this will still not catch collusion. Once again, it can be
  1135. detected that this is happening if the flow does not set up correctly, and the
  1136. errant switches avoided. However, if the switches claim a direct connection,
  1137. which causes traffic to flow to them, and then route the traffic through,
  1138. it will be difficult to detect except by measuring the service provided.
  1139.  
  1140.  
  1141. 6 Possible Optimizations
  1142.  
  1143.     Although this document is not an engineering design, there are a
  1144. number of possible optimizations which are worth discussing here. Many other
  1145. such optimizations are possible. They have not been considered in detail here,
  1146. since they are generally low level engineering and depend on the exact details
  1147. of the structure chosen. The key focus in this document is to discern the hard
  1148. problems, and pick a broad line of attack on them.
  1149.  
  1150. 6.1 Default Routing Tables
  1151.  
  1152.     One useful optimization which might be included is to provide a
  1153. facility for handling traffic without the overhead of calculating a route
  1154. and setting up a flow. [Estrin] Needless to say, this could only be done
  1155. for a limited number of classes of traffic, but it is possible. Basically,
  1156. a way would exist to indicate that traffic was not part of any flow, and
  1157. one (or a small number) of default routing tables for such traffic would be
  1158. precomputed, in all routers, as is the current practise.
  1159.     This would not be unreasonably expensive. For example, assume that
  1160. the system contains 5 levels, and the fan-out at each level is on the order
  1161. of 200. Thus, the system could handle up to 200^5 networks, or 3x10^10
  1162. networks; this should be large enough for the reasonable future. Such a
  1163. system would only mean that the average router with a minimal map would
  1164. need a map with 5*200*(3+1), or 4000, nodes (assuming that routers outnumber
  1165. networks/areas by a 3:1 ratio, which seems about right from the current
  1166. system; this gives triple connectivity to each network, or fairly redundant
  1167. connectivity). Assuming each router is connected to 3 networks, then the
  1168. map would contain 5*200*(3*3), or 9000, arcs. Such a map would be fairly
  1169. easily handlable by even the current generation of router hardware.
  1170.  
  1171.     The problem with this idea (within this architecture) is that a
  1172. mapping must still be created from the destination node identifier to the
  1173. address. How does this mapping happen? One possibility is to have to have
  1174. first hop router (or the host) add it to the packet. Alternatively, each
  1175. router along the path would have to do the mapping. Clearly, the mapping in
  1176. each intermediate router could be installed via a setup, but this would just
  1177. get us exactly what we are trying to avoid!
  1178.     Also, it is not clear if this optimizations will be useful in the
  1179. future. It remains to be see whether if, in a system in which policy
  1180. configuration and access controls are much easier, and thus more common, much
  1181. traffic is sent out in the default class, and if the free, general access
  1182. model of network use we have enjoyed continues. If not, the concept of default
  1183. routing tables is probably not a useful one, since almost all traffic would
  1184. need a flow set up to handle it.
  1185.  
  1186. 6.2 Map Discarding in Stub Areas
  1187.  
  1188.     One additional idea, if default routing tables are included, is to
  1189. support stub areas. The complaint might be raised that even supporting a
  1190. map with 4000 nodes (from the example above) is pointless if an area is
  1191. only singly connected to the outside world, or neither wants to support
  1192. transit traffic nor pick optimal area exit routers. In these cases having
  1193. the topology map for the rest of the system outside the area is
  1194. unnecessary; the traffic is simply sent to any border router, and is routed
  1195. from there.
  1196.     (The former simplification is obvious; doing either of the latter
  1197. two means that traffic must be able to differentiate as to which border
  1198. router is the best one to head toward; i.e. traffic inside the system must
  1199. have access to a full outside map to know which border router is the best
  1200. exit router, if routing loops are to be prevented.)
  1201.  
  1202. 6.3 Flexible "No-brainer" Routes
  1203.  
  1204.     One major potential issue with the current architecture is the fact
  1205. that the simplistic "no-brainer" route is that which is computed with the
  1206. minimal map, and that minimal map implies strict heirarchical routing.
  1207.     The problem with that is that a K level area, such as a campus, which
  1208. in actual physical terms has connections to several long-haul networks, each
  1209. of which is probably a separate K+1 level area, has an insufferable choice to
  1210. make. Depending on which K+1 level area they associate themselves with, any
  1211. traffic using the simple "no-brainer" routing will get to that K level area by
  1212. means of the long-haul network with which the K level area is associated in
  1213. its global address. This is the problem referred to some while above, where it
  1214. was indicated that perhaps using the address to generate the "no-brainer"
  1215. route is an overload of that name which finally breaks down.
  1216.  
  1217.     One solution to this problem involves the use of what are called
  1218. "route suffixes" [Clark]. When the host-name to address translation is
  1219. performed, the address which comes back comes with several incomplete source
  1220. routes, which represent potential useful paths, terminating at the
  1221. destination, through the nearby topology. If the most detailed (last) item in
  1222. the route suffix is not know to the source, it backs up and tries the previous
  1223. (less detailed) item, and so on. Given several route suffixes, probably one
  1224. for each major long-haul network which an area is attached to, the source can
  1225. easily make a determination as to which long-haul network it prefers to
  1226. use to get to the destination.
  1227.     The major advantage of this scheme is that is it fairly efficient; a
  1228. small amount of extra data is passed back at the time of the address lookup
  1229. which allows a choice to be easily made. What mechanisms are available in this
  1230. architecture to do this?
  1231.  
  1232.     One rough equivalent in this architecture can easily be found by
  1233. allowing each network attachment point to have multiple addresses; this would
  1234. indicate that a destination could be reached via multiple long-haul networks.
  1235. (This is equivalent to allowing K-level areas to overlap.) This solution is
  1236. not preferred since it conflicts with a previous goal of the address, which is
  1237. to provide a way of concisely describing the topology. If any network
  1238. attachment point can have many names (addresses), this will be more difficult.
  1239.     In effect, this approach overloads yet one more function onto the
  1240. address, which is to optimize picking a slightly more optimal route; the
  1241. address is not really suited to having to support this one further function,
  1242. however. There are a number of ways to do this which do fit well within the
  1243. architecture, though.
  1244.  
  1245.     The first is a slightly more general variant of the original scheme,
  1246. which is to use the local abstraction control mechanism to discover some
  1247. details of the topology around the destination. This is seems to be less
  1248. efficient than the "route suffix" mechanism, but has the same effect; the
  1249. source is given more information which allows it to make a choice.
  1250.     The second, in some senses a variant of the first, is to remove from
  1251. the map all areas which do not allow transit traffic; i.e. "stub" areas. This
  1252. would greatly diminish the number of nodes in the map, and allow more detail
  1253. to be kept. Whenever a source needed to send traffic to a destination in that
  1254. stub area, it could pick up topology information about that area and enter
  1255. it into the map.
  1256.  
  1257.     Both of these represent a slightly more formal way of doing
  1258. essentially what the route suffix does, which is provide more routing
  1259. information specific to the destination. The difference is that the
  1260. information in the route suffix is picked by the destination, as opposed to
  1261. the source being given general information about the topology near the
  1262. destination.
  1263.     One final option is to provide essentially exactly the route suffix
  1264. mechanism. As alluded to above in the discussion of fundamental object
  1265. classes, it might be necessary, if this optimization is deemed important, to
  1266. provide a new object class, that of route suffix. Rather than overload this
  1267. function onto any of the existing object classes (and the names for those
  1268. objects), it is perhaps best to simply bit the bullet and create the new
  1269. object class.
  1270.  
  1271.  
  1272. 7 Deployment
  1273.  
  1274.     A great advantage of this architecture is that it can be deployed in
  1275. an incremental fashion, and furthermore that it does not require any changes
  1276. in hosts for fairly full operation (although minor changes would improve
  1277. things somewhat).
  1278.     The following section is a first crack at defining how the deployment
  1279. would work.
  1280.  
  1281. 7.1 Incremental Deployment in the Routers
  1282.  
  1283.     The system can fairly obviously be interoperated with the existing
  1284. architecture provided host identifiers continue to be allocated along the
  1285. existing lines of network numbers. This will allow the system to be deployed
  1286. and brought up incrementally in the routers.
  1287.     In an old-style router, it will still be given lists of network
  1288. numbers, and the metric to each. In new-style routers, areas of the network
  1289. which are being serviced by old-style routers will be masked by 'transitional'
  1290. routers which provide a mapping from the old routing protocol to the new
  1291. system.
  1292.     Of course, as the number of networks mounts, the existing routing
  1293. will break down, and render the old-style routers non-functional. By that
  1294. time, basically all the main routers should have been converted to use the
  1295. new system, and the old routing mechanisms can be turned off. Stub routers
  1296. which use default only can continue to operate as before, obviously. Once the
  1297. old-style routing mechanisms are turned off, allocation of host identifiers
  1298. can proceed in a more flexible and space efficient form.
  1299.     Obviously, old-style routing could continue to be used once this
  1300. happens, but hosts served by old-style routers would probably not be
  1301. able to get access to the new hosts, since the new host identifiers would
  1302. not contain any topology information the old-style routers could use to
  1303. route the traffic. One possible way around this is to have all traffic
  1304. to what looks like new network numbers send to a new router which would
  1305. perform the mapping in a similar way to the way hosts are supported.
  1306.  
  1307. 7.2 Incremental Deployment in the Hosts
  1308.  
  1309.     For the first stage, no changes would be absolutely necessary in the
  1310. hosts at all. The host would translate from the name to the host identifier,
  1311. and send out an existing packet to the first hop router.
  1312.     The first hop router would then do the flow setup, using some default
  1313. policy attributes. The destination network address would either be looked up
  1314. separately, with attendant overhead, or, if the router overheard the name
  1315. lookup, it might have cached it.
  1316.  
  1317.       The issue of network masks and node identifiers needs to be thought
  1318. about to make sure that getting from hosts to neighbouring hosts, as well as
  1319. first hop routers, continues to work.
  1320.     Clearly, if node identifiers are assigned without respect to topology,
  1321. then the mask and match process can no longer be used to determine whether or
  1322. not a given destination is on the local wire. Doing anything else means that
  1323. the address space will not be allocated inefficiently, bringing us back to
  1324. where we were! However, given the practical difficulties involved in true
  1325. random allocation of node identifiers, it may be necessary to allocate in
  1326. blocks.
  1327.     One issue is involved in the translation of node identifiers to local
  1328. hardware addresses. Some possibilities exist involving use of ARP, but these
  1329. are nasty. For networks which depend on direct mapping from the node
  1330. identifier to the network address, it is obviously unavoidable to allocate
  1331. chunks of the node identifier space.
  1332.     Another problem involves making sure that each host understands how to
  1333. get to its first hop router for off-network traffic. If hosts exactly follow
  1334. the Host Requirement RFC, and are set up with an all ones subnet mask, then
  1335. any attempt to send traffic to another host will perforce go to a router. The
  1336. default router table will have been filled in via the Router Discovery ICMP
  1337. mechanism, and the router's local network address will be resolved as
  1338. discussed above. This is inefficient for traffic on the local network,
  1339. however; if the all ones mask approach is used, routers will also have to stop
  1340. sending Redirects!
  1341.     If a proposed document on routing in the host is worked on (or
  1342. alternatively a revision to the Host Requirement RFC is put in hand), this
  1343. topic should be carefully considered to make sure the proposed mechanism will
  1344. integrate well into this new approach.
  1345.  
  1346.     Eventually, the process could be optimized by slight changes in the
  1347. host. It would ask for and remember the new type address when it contacted the
  1348. name server; if it had special policy requirements (or charge authorizations,
  1349. or whatever) it would include these in the packet it sends out, either in the
  1350. initial connection packet or in a special communication to the first hop
  1351. router, or whichever box is doing the flow setup.
  1352.  
  1353. 7.3 Upgrading to a Long Node ID
  1354.  
  1355.     A 32-bit system wide node identifier is clearly unsuitable in the
  1356. long run. One possibility for the latter is to make the UID's locally
  1357. (perhaps pairwise locally) significant only; however, this is complex, and
  1358. loses some of the advantages of having a node idenfitier.
  1359.     The other main possibility is a new IP packet format with 64 bit
  1360. UID's. A new packet format might be desirable anyway, for other reasons. If
  1361. the 64 bit UID path is chosen, and the phaseover started before the 32 bit
  1362. space is used (so that the UID of any node in the new 64 bit space is simply
  1363. the zero extension of its UID in the 32 bit space), there will not be any
  1364. cases of new and old style hosts which cannot communicate due to the inabilty
  1365. of the old address space to name hosts in the new space, which is the usual
  1366. cause of problems in conversions. Once basically all hosts have been
  1367. converted to the new format, use of the rest of the identifier space can
  1368. proceed. This is probably the preferable path.
  1369.  
  1370.     A number of ways of interoperating old and new style hosts exist.
  1371. The first hop router might automatically convert old-style packets to new
  1372. style. The advantage of this is that hosts can throw out the old code; the
  1373. disadvantages are the cost of the conversion to and fro when two old-style
  1374. hosts are conversing. Another possibility is that hosts might continue to
  1375. understand both old and new.
  1376.     In any case, there are four cases to be considered; old-old, old-new,
  1377. new-old, and new-new (the first being the source and the second the
  1378. destination of the packets). The tricky one is the new-old, since in any
  1379. system something must convert the format; either the source host needs to
  1380. find out that the host does not understand new-style (perhaps by trying
  1381. a new-style first and seeing if it gets a response) and send an old-style,
  1382. or the last-hop router, which needs to know which of its hosts are new and
  1383. which are old, needs to do the conversion. A messy problem however it is
  1384. sliced! One useful trick is to use spare bits in the headers to record
  1385. packets which were sourced in the other format, or hosts which can generate
  1386. and understand new format packets, etc.
  1387.  
  1388.  
  1389. 8 Conclusion
  1390.  
  1391.     The system proposed above consists of many elements, with the utility
  1392. of each created and increased by the interaction with others. The way in which
  1393. they were put together was not as straightforward as it now appears. A long
  1394. process of revisiting of requirements and tinkering with the design has
  1395. resulted in the complete structure now laid out, with each piece dependant on
  1396. others and part of a deeply integrated whole.
  1397.     The system also contains a number of old ideas, put together in a
  1398. novel way, together with the addition of some new ideas. In both of these
  1399. aspects (the extreme interdependence of a limited set of ideas, developed over
  1400. time, together with the resuse of existing good ideas with some augmentation)
  1401. it resembles the process which created Unix. [Thompson]
  1402.  
  1403.     It is believed that the proposed architecture detailed above meets all
  1404. the goals outlined in the requirements, and in particular the size, making
  1405. possible a extremely long (essentially indefinite) use of the IP architecture.
  1406.     Finally, it is worth noting again the many instances here in which
  1407. the power and flexibility of the architecture are improved by leaving
  1408. something out (route generation, data abstraction, etc), rather than by
  1409. adding something.
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416. References    (Incomplete)
  1417.  
  1418.  
  1419. [BBN]        ???; "Adding Areas to the ARPANet Routing Algorithm??";
  1420.         1982??.
  1421.  
  1422.  
  1423. [Chiappa84]    J. Noel Chiappa; "??"; 'dev-cgw' mailing list; 1984?.
  1424.  
  1425.  
  1426. [Chiappa91]    J. Noel Chiappa; "The IP Addressing Issue"; Internet-Draft
  1427. Yyyyyy 1991.
  1428.  
  1429.  
  1430. [Clark]    
  1431.  
  1432.  
  1433. [Cohen]        Danny Cohen; "On Names, Addresses and Routings"; IEN 23;
  1434. January 1978.
  1435.  
  1436.  
  1437. [Corbato]    Fernado Corbato and Jerome H. Saltzer; "Multics: The
  1438. First Seven Years?"; ??
  1439.  
  1440.  
  1441. [Dijkstra]    Edgar W. Dijkstra; "A Note on Two Problems in Connection with
  1442. Graphs"; Numer. Math, Vol. 1, pp. 269-271; 1959.
  1443.  
  1444.  
  1445. [Estrin]    Deborah Estrin, Yakov rekhter and Steve Hotz, "A Unified
  1446. Approach to Inter-Domain Routing"; In preparation.
  1447.  
  1448.  
  1449. [McQuillan]    John M. McQuillan, Isaac Richer and Eric C. Rosen; "ARPANet
  1450. Routing Algorithm Improvments"; Bolt, Beranek and Newman Report No. 3803;
  1451. April 1978.
  1452.  
  1453.  
  1454. [Little]    M. Little; "Goals and Functional Requirements for Inter-
  1455. Autonomous System Routing"; RFC1126; October 1989.
  1456.  
  1457.  
  1458. [Moy]        John Moy; "The OSPF Protocol"; RFCXXXX; Yyy 1991
  1459.  
  1460.  
  1461. [Reed]        David Reed; "??"; CSR Group Talk; 1979??
  1462.  
  1463.  
  1464. [SaltzerSR]    Jerome H. Saltzer; "Source Routing?"; ??
  1465.  
  1466.  
  1467. [Saltzer82]    Jerome H. Saltzer; "On the Naming and Binding of Network
  1468. Destinations"; Local Computer Networks, North-Holland Publishing; 1982.
  1469.  
  1470.  
  1471. [Shoch]        John F. Shoch; "Inter-Network Naming, Addressing and Routing";
  1472. IEN 19; January 1978.
  1473.  
  1474.  
  1475. [Thompson]    Dennis M. Ritchie and Ken Thompson; "The UNIX Timesharing
  1476. System"; CACM, Vol. 17, No. 7, pp. 365-375; July 1974.
  1477.